package com.cskaoyan.service;

import com.cskaoyan.dao.OrderDao;
import com.cskaoyan.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

//@Component
//@Service(value = "userService111")//如果注解中只有一个value属性，“value=”可以省略
//@Service("userService111")
@Service   //组件id=userServiceImpl,默认的组件id是类名的首字母小写
public class UserServiceImpl implements UserService {

    //@Value("songge")
    @Value("${userService.username}")
    String username;

    //注入功能其实就是组件里的成员变量赋值 👉 而赋的值来源于容器

    //如果容器中的该类型组件不止一个，就要指定组件id，通过@Qualifier注解的value属性来指定
    @Autowired
    @Qualifier("userDaoImpl1")
    UserDao userDao1;

    //可以直接使用@Resouce注解的name属性指定组件id；如果没有使用name属性，默认是按照类型注入
    @Resource(name = "userDaoImpl2")
    UserDao userDao2;

    @Autowired
    OrderDao orderDao;//这个类型的组件在容器中只有一个，按照类型注入

    @Override
    public void sayHello() {
        userDao1.sayHello();
        userDao2.sayHello();
    }
}
